Most modern computing applications and systems, despite their continually changing architectures, fundamentally rely upon the ability to communicate with other applications and systems. This reliance has only become stronger with the widespread adoption of mobile computing devices, which provide a variety of services that involve sending and/or retrieving data to/from remote systems despite the often-changing locations of these mobile devices.
Many computer networks utilize packets for such communications, and thus may be referred to as packet-switched networks or packet-oriented networks. Such packet networks typically operate utilizing packet forwarders (e.g., switches) that receive packets and “forward” these packets on to other nodes. Accordingly, transmitted packets may be forwarded from a source potentially many times across many “hops” in one or more networks to a destination. Packets, from the standpoint of network elements, may be viewed as belonging to network “flows”, where each flow may represent a number of packets having common characteristics, such as a common source and/or destination address, etc.
Many packet forwarders utilize dedicated, special-purpose hardware elements to perform particular forwarding-related operations such as packet classification, flow learning, etc. Such dedicated hardware can provide very fast processing for these operations, reducing the amount of time for packets to be forwarded by the packet forwarder which thus, especially when utilized with other special-purpose packet forwarders, can reduce the amount of time required for a packet to move from its source to its destination. Such time efficiency is very important for many modern applications, such as audio/visual communications, real-time (or near real-time) monitoring, etc.
However, a relatively recent but widespread computing trend related to virtualization involves implementing software solutions to perform tasks that previously had been performed by hardware, resulting in ease of management, physical space saving, power saving, lower cost of ownership, flexibility, and other benefits. Accordingly, many network functions (e.g., routers, switches, firewalls, etc.) that previously involved the deployment of special-purpose hardware units have begun to be implemented using software-centric approaches. However, such software solutions tend to be inherently less efficient (in terms of time utilization, resource utilization, etc.) than the corresponding hardware solutions, as the processing units (e.g., general purpose computer processor(s), network processor(s), etc.) may have limited or non-existent hardware support for certain required operations (such as performing lookups/searches, encryption, encoding/decoding, etc.).
Accordingly, there exists a significant need for improved software-based solutions to efficiently implement many network functions, including packet forwarding operations.